# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name：     Project -> KamWebApi
   Description :   可爱猫对接接口API
   Author :        William
   date：          2020/2/21/0021
-------------------------------------------------
   Change Activity:
                   2020/2/21/0021: 可爱猫对接接口API文件初创
                   2020/2/26：修改一对多微信推送接口
-------------------------------------------------
所有发消息必须使用POST
Utf8格式
参数必须有：
1、EventType
事件类型
2、sender_wxid
机器人的ID必须指定
3、安全KEY码更加设置，如果设置了
则
VerificationKey
必须同设置一致

其中EventType说明：
case
EventType:
"""
import base64
import json
from urllib import parse

import requests

from ..Config.Setting import *


class KamWeb:
    def __init__(self):
        self.Send_Url = Send_Url

    def send_request(self, data):
        '''通用消息发送接口 get请求，需要把请求的参数以dict的格式组合发送过来'''
        try:
            url =  "http://127.0.0.1:9992/Send/"
            data="&".join("%s=%s"%(item,data[item]) for item in data)
            data=data.encode('utf-8')
            res = requests.post(url, data=data, timeout=1,headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"})
            logger.info(res.content)
            hs = json.loads(res.content)
            return hs
        except Exception as e:
            logger.warning("%s"%(e))
            return False

    def send_text_msg(self, robwxid, to_wxid, msg):
        '''私聊文本消息发送 事件接口位置： Id:10001 -> Type:10001
        1： 给某人私信发文字
        to_wxin：对方的微信号
        msg ：私信内容'''
        data = {}
        data["sender_wxid"] = robwxid
        data["EventType"] = 1
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def send_picture(self, robwxid, to_wxid, msg):
        '''    @todo
            2: 给某人私信发图片
            to_wxin：对方的微信号
            path ：路径，比如是绝对路径'''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 2
        
        data["to_wxin"] = to_wxid
        data["path"] = msg
        return self.send_request(data)

    def send_group_at_msg(self, robwxid, group_wxid, at_wxid, at_name, msg):
        '''群发消息 事件接口位置：Id:10003 -> Type:20001 '''
        data = {}
        data["sender_wxid"] = robwxid
        data["Id"] = (10003)
        data["EventType"] = (20001)
        
        data["group_wxid"] = (group_wxid)
        data["member_wxid"] = (at_wxid)
        data["member_name"] = (at_name)
        data["msg"] = msg
        return self.send_request(data)

    def send_face(self, robwxid, to_wxid, msg):

        '''
    @todo
    3: 给某人私信发表情
    to_wxin：对方的微信号
    path ：路径，比如是绝对路径
    '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 3
        
        data["to_wxin"] = to_wxid
        data["path"] = msg
        return self.send_request(data)

    def send_file(self, robwxid, to_wxid, msg):

        '''
        @todo
        4: 给某人私信发文件
        to_wxin：对方的微信号
        path ：路径，比如是绝对路径
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 4
        
        data["to_wxin"] = to_wxid
        data["path"] = msg
        return self.send_request(data)

    def send_link(self, robwxid, to_wxid, msg):
        '''
    @todo
    5: 给某人私信发送分享链接
    to_wxin：对方的微信号
    title ：标题（必填）
    text：内容（必填）
    target_url：跳转链接
    pic_url：图片链接
    icon_url：小图标链接
    '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 5
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def send_music(self, robwxid, to_wxid, msg):
        '''6: 给某人私信发送分享音乐
        to_wxin：对方的微信号
        type ：类型
        0
        随机模式 / 1
        网易云音乐 / 2
        酷狗音乐 / 3
        QQ音乐 / 因乐库原因当前版本都为网易云音乐
        name：名称
        '''

        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 6
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def send_video(self, robwxid, to_wxid, msg):

        '''@todo
        7: 给某人私信发送视频
        to_wxin：对方的微信号
        path ：路径，比如是绝对路径
        '''

        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 7
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def get_buddy_list(self, robwxid):
        '''  9: 取好友列表
        isrefresh ：是否刷新列表
        true  \false
        '''
        data = {}
        data["sender_wxid"] = robwxid
        data["EventType"] = 9
        data["isrefresh"] = False
        return self.send_request(data)

    def del_buddy(self, robwxid, to_wxid, msg):

        '''@todo
        10: 删除好友
        Friend_wxid：对方的微信号
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 10
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def write_memo(self, robwxid, to_wxid, msg):

        '''@todo
        11: 修改好友备注
        Friend_wxid：对方的微信号
        note: 备注内容
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 11
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def write_memo2(self, robwxid, to_wxid, msg):

        '''@todo
        12: 修改好友备注
        Friend_wxid：对方的微信号
        note: 备注内容
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 12
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def send_group_msg_at(self, robwxid, to_wxid, msg):

        '''@todo
        101: 发送群消息并艾特某人
        Group_wxid：群号
        member_wxid:@的微信ID
        member_Name:@的微信昵称
        msg: 信息
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 101
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def agree_group(self, robwxid, to_wxid, msg):

        '''@todo
        102: 同意群聊邀请
        Group_wxid：群号
        Json_Msg:@的微信ID
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 102
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def create_group(self, robwxid, to_wxid, msg):

        '''@todo
        103: 建立新群
        friends：多个好友id，格式为：f1 | f2 | f3
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 103
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def get_group_list(self, robwxid):

        '''@todo
        104: 获取群列表
        isrefresh：是否刷新
        返回json执行解析
        '''
        data = {}
        data["sender_wxid"] = robwxid
        data["EventType"] = 104
        data["isrefresh"] = False
        return self.send_request(data)

    def get_group_member(self, robwxid, to_wxid, msg):

        '''@todo
        105: 获取群成员列表
        Group_wxid：群号
        isrefresh：是否刷新
        返回json执行解析
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 105
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def get_member_info(self, robwxid, to_wxid, msg):

        '''@todo
        106: 获取群成员信息
        Group_wxid：群号
        member_wxid：微信ID
        isrefresh：是否刷新
        返回json执行解析
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 106
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def invate(self, robwxid, to_wxid, msg):

        '''@todo
        107: 邀请加入群聊
        Group_wxid：群号
        friend_wxid：被邀请人ID
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 107
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def write_group_name(self, robwxid, to_wxid, msg):

        '''@todo
        108: 修改群名称
        Group_wxid：群号
        newgroupname：新群名称
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 108
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def gonggao(self, robwxid, to_wxid, msg):

        '''@todo
        109: 新公告
        Group_wxid：群号
        content：新的公告
        '''
        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 109
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)

    def quit_group(self, robwxid, to_wxid, msg):

        '''
        @todo
        110: 退出群聊
        Group_wxid：群号
        '''

        data = {}
        data["sender_wxid"] = robwxid
        
        data["EventType"] = 110
        
        data["to_wxin"] = to_wxid
        data["msg"] = msg
        return self.send_request(data)


if __name__ == '__main__':
    k = KamWeb()
    k.get_group_list('wxid_3mp6tkojmw6s22')
